package com.ethink.warehouse.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ethink.warehouse.api.info.MateInventoryAdjustLogInfo;
import com.ethink.warehouse.api.info.MateInventoryAdjustLogModeInfo;
import com.ethink.warehouse.api.request.*;
import com.ethink.warehouse.api.response.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 库存矫正记录 Facade接口
 *
 * @author default
 * @date 2022-11-17
 */
@FeignClient(name = "ethink-warehouse-service", path = "warehouse-service/facade/v1/mateInventoryAdjustLog", contextId = "mateInventoryAdjustLogFacade")
public interface MateInventoryAdjustLogFacade {

    @PostMapping("/queryMateInventoryAdjustLog")
    @ResponseBody
    Page<MateInventoryAdjustLogInfo> queryMateInventoryAdjustLog(@RequestBody MateInventoryAdjustLogQueryRequest request);

    @PostMapping("/getMateInventoryAdjustLogById")
    @ResponseBody
    MateInventoryAdjustLogGetDetailResponse getMateInventoryAdjustLogById(@RequestParam("mateInventoryAdjustLogId") Long mateInventoryAdjustLogId);

    @PostMapping("/addMateInventoryAdjustLog")
    @ResponseBody
    MateInventoryAdjustLogAddResponse addMateInventoryAdjustLog(@RequestBody MateInventoryAdjustLogAddRequest request);

    @PostMapping("/updateMateInventoryAdjustLog")
    @ResponseBody
    MateInventoryAdjustLogUpdateResponse updateMateInventoryAdjustLog(@RequestBody MateInventoryAdjustLogUpdateRequest request);

    @PostMapping("/deleteMateInventoryAdjustLog")
    @ResponseBody
    MateInventoryAdjustLogDeleteResponse deleteMateInventoryAdjustLog(@RequestParam("id") Long id);

    @PostMapping("/approvedMateInventoryAdjustLog")
    @ResponseBody
    void approvedMateInventoryAdjustLog(@RequestParam("id") Long id);

    @PostMapping("/refuseMateInventoryAdjustLog")
    @ResponseBody
    void refuseMateInventoryAdjustLog(@RequestParam("id") Long id);

    @PostMapping("/queryMateInventoryAdjustLogMode")
    @ResponseBody
    Page<MateInventoryAdjustLogModeInfo> queryMateInventoryAdjustLogMode(@RequestBody MateInventoryAdjustLogQueryModeRequest request);

}